home *** CD-ROM | disk | FTP | other *** search
/ IRIX 6.4 Applications 1997 August / SGI IRIX 6.4 Applications 1997 August.iso / dist / gateway.idb / usr / WebFace / Source / 20-NetworkServices / dhcp / dhcp-netconf-js.cgi.z / dhcp-netconf-js.cgi
Encoding:
Text File  |  1997-07-30  |  13.0 KB  |  265 lines

  1. #!/usr/bin/perl5
  2.  
  3. $js =
  4. "$js_standard
  5. $js_error_box
  6. $js_hostname
  7. $js_ip
  8. function checkForm(form) {
  9.     if (!testHostname(form.pro_host_prefix, form.pro_host_prefix.value, \"hostname prefix\", 0)) return (false);
  10.     if (!testRange(form.pro_ipaddress_range)) return (false);
  11.     if (!testIPaddress(form.pro_netmask.value, 1)) {
  12.         errorBox(form.pro_netmask, \"Invalid netmask: \" + form.pro_netmask.value);
  13.         return (false);
  14.     }
  15.     if (!testHostname(form.pro_nis_domain, form.pro_nis_domain.value, \"NIS domain name\", 0)) return (false);
  16.     return (true);
  17. }
  18. function testRange(Ctrl) { 
  19.     for (start = 0, comma = 0; comma != -1; start = comma+1) { 
  20.         comma = Ctrl.value.indexOf (',', start);  
  21.         if (start == Ctrl.value.length) return (true); 
  22.         if (comma == start) continue; 
  23.         if(comma == -1) str = Ctrl.value.substring(start, Ctrl.value.length); 
  24.         else str = Ctrl.value.substring(start, comma); 
  25.         for (s=0, hyphen=-1; s < str.length; s++) { 
  26.             if (str.charAt(s) == '-') { hyphen = s; continue; } 
  27.             if (! checkInt_c(str.charAt(s), 10)) {
  28.                 if(str.charAt(s) == ' ') 
  29.                     errorBox (Ctrl, \"Please do not use spaces in \\nthe address range list\"); 
  30.                 else 
  31.                     errorBox (Ctrl, \"Illegal character: \" + str.charAt(s) 
  32.                         + \" in address range list\");   
  33.                 return (false); 
  34.             }
  35.     } 
  36.     if (hyphen == -1) { 
  37.         errorBox (Ctrl, \"Illegal range value: \" + str); 
  38.         return (false); 
  39.     } 
  40.     num1 = parseInt(str.substring(0,hyphen)); 
  41.     num2 = parseInt(str.substring(hyphen+1,str.length)); 
  42.     if (num1 > num2) { 
  43.         errorBox (Ctrl, \"Illegal range value: \" + str); 
  44.         return (false); 
  45.     } 
  46.     if (num1 > 255 || num2 > 255) { 
  47.         errorBox (Ctrl, \"Range values must be between 0 and 255.\"); return (false); } 
  48.     } 
  49.     return (true);
  50. }";
  51.  
  52.  
  53. $js_long =
  54. "$js_standard
  55. $js_error_box
  56. $js_filename
  57. $js_hostname
  58. $js_iplist
  59. $js_ip
  60.  
  61. function checkForm(form) {
  62.     if (!testGeneral(form)) return (false);
  63.     if (!testServer(form)) return (false);
  64.     if (!testApplication(form)) return (false);
  65.     if (!testServices(form)) return (false);
  66.     if (!testIPperHost(form)) return (false);
  67.     if (!testIPperInterface(form)) return (false);
  68.     if (!testLinkLayer(form)) return (false);
  69.     if (!testTCP(form)) return (false);
  70.     return (true);
  71. }
  72. function testGeneral(form) {
  73.     if(!testInt(form.pro_address_counter,\"IP starting number\")) return (false);
  74.     if(!testHostname(form.pro_host_prefix,form.pro_host_prefix.value,\"hostname prefix\",1)) return (false);
  75.     if(!testInt(form.pro_host_pfx_counter,\"hostname starting number\")) return (false);
  76.     if(!testIPAddr(form.pro_netmask,\"subnet mask\",1)) return (false);
  77.     if(!testInt(form.pro_lease,\"address lease time\")) return (false);
  78.     if(!testRange(form.pro_ipaddress_range,\"IP address range\")) return (false);
  79.     if(!testIPList(form.pro_router_addr,\"router IP address\")) return (false);
  80.     if(!testInt(form.pro_bootfile_size,\"bootfile size\")) return (false);
  81.     if(!testFile(form.pro_bootfile_name,\"bootfile name\")) return (false);
  82.     if(!testInt(form.pro_time_offset,\"time offset\")) return (false);
  83.     if(!testFile(form.pro_meritdump_pathname,\"merit dump file pathname\")) return (false);
  84.     if(!testFile(form.pro_root_pathname,\"root disk file pathname\")) return (false);
  85.     if(!testFile(form.pro_extensions_pathname,\"extensions pathname\")) return (false);
  86.     if(!testHostname(form.pro_TFTPserver_name,form.pro_TFTPserver_name.value,\"TFTP server name\",1)) return (false);
  87.     return (true);
  88. }
  89. function testServer(form) {
  90.     if(!testHostname(form.pro_dns_domain,form.pro_dns_domain.value,\"NIS domain name\",1)) return (false);
  91.     if(!testIPList(form.pro_dnsserver_addr,\"DNS server address\")) return (false);
  92.     if(!testIPAddr(form.pro_propel_server,\"propel server address\",0)) return (false);
  93.     if(!testIPList(form.pro_timeserver_addr,\"time server address\")) return (false);
  94.     if(!testIPList(form.pro_logserver_addr,\"UDP log server address\")) return (false);
  95.     if(!testIPList(form.pro_cookieserver_addr,\"cookie server address\")) return (false);
  96.     if(!testIPList(form.pro_LPRserver_addr,\"LPR server address\")) return (false);
  97.     if(!testIPList(form.pro_resourceserver_addr,\"service location server address\")) return (false);
  98.     if(!testIPList(form.pro_swapserver_addr,\"swap server address\")) return (false);
  99.     if(!testIPList(form.pro_nameserver116_addr,\"IEN 116 name server address\")) return (false);
  100.     if(!testIPList(form.pro_impressserver_addr,\"impress server address\")) return (false);
  101.     if(!testIPList(form.pro_NTPserver_addr,\"NTP server address\")) return (false);
  102.     return (true);
  103. }
  104. function testApplication(form) {
  105.     if(!testIPList(form.pro_X_fontserver_addr,\"X window font server address\")) return (false);
  106.     if(!testIPList(form.pro_X_displaymgr_addr,\"X window manager server address\")) return (false);
  107.     if(!testIPList(form.pro_mobileIP_homeagent_addr,\"mobile home agent server address\")) return (false);
  108.     if(!testIPList(form.pro_SMTPserver_addr,\"SMTP server address\")) return (false);
  109.     if(!testIPList(form.pro_POP3server_addr,\"POP3 server address\")) return (false);
  110.     if(!testIPList(form.pro_NNTPserver_addr,\"NNTP server address\")) return (false);
  111.     if(!testIPList(form.pro_WWWserver_addr,\"WWW server address\")) return (false);
  112.     if(!testIPList(form.pro_fingerserver_addr,\"finger server address\")) return (false);
  113.     if(!testIPList(form.pro_IRCserver_addr,\"Internet chat server address\")) return (false);
  114.     if(!testIPList(form.pro_StreetTalkserver_addr,\"StreetTalk server address\")) return (false);
  115.     if(!testIPList(form.pro_STDAserver_addr,\"STDA server address\")) return (false);
  116.     return (true);
  117. }
  118. function testServices(form) {
  119.     if(!testIPList(form.pro_NetBIOS_nameserver_addr,\"NetBIOS name server address\")) return (false);
  120.     if(!testIPList(form.pro_NetBIOS_distrserver_addr,\"NetBIOS dist server address\")) return (false);
  121.     if(!testHostname(form.pro_nis_domain,form.pro_nis_domain.value,\"NIS domain name\",1)) return (false);
  122.     if(!testIPList(form.pro_nisserver_addr,\"NIS server address\")) return (false);
  123.     if(!testHostname(form.pro_nisplus_domain,form.pro_nisplus_domain.value,\"NIS+ domain name\",1)) return (false);
  124.     if(!testIPList(form.pro_nisplusserver_addr,\"NIS+ server address\")) return (false);
  125.     return (true);
  126. }
  127. function testIPperHost(form) {
  128.     if(!testIPPairs(form.pro_policy_filter,\"policy filter address pair\")) return (false);
  129.     if(!testInt(form.pro_max_reassy_size,\"datagram reassembly size\")) return (false);
  130.     if(!testMaxMin(form.pro_max_reassy_size,\"datagram reassembly size\",576,65535)) return (false);
  131.     if(!testInt(form.pro_IP_ttl,\"IP time to live\")) return (false);
  132.     if(!testMaxMin(form.pro_IP_ttl,\"IP time to live\",1,255)) return (false);
  133.     if(!testInt(form.pro_pathmtu_timeout,\"path MTU aging timeout\")) return (false);
  134.     if(!testIntList(form.pro_pathmtu_table,\"path MTU\")) return (false);
  135.     if(!testMaxMinList(form.pro_pathmtu_table,\"path MTU\",68,65535)) return (false);
  136.     return (true);
  137. }
  138. function testIPperInterface(form) {
  139.     if(!testInt(form.pro_mtu,\"MTU for the interface\")) return (false);
  140.     if(!testMaxMin(form.pro_mtu,\"MTU for the interface\",68,65535)) return (false);
  141.     if(!testIPAddr(form.pro_broadcast,\"broadcast address\",0)) return (false);
  142.     if(!testIPAddr(form.pro_router_solicit_addr,\"router solicitation address\",0)) return (false);
  143.     if(!testIPPairs(form.pro_static_routes,\"static route address pair\")) return (false);
  144.     return (true);
  145. }
  146. function testLinkLayer(form) {
  147.     if(!testInt(form.pro_arpcache_timeout,\"ARP cache timeout\")) return (false);
  148.     return (true);
  149. }
  150. function testTCP(form) {
  151.     if(!testInt(form.pro_TCP_ttl,\"TCP default time to live\")) return (false);
  152.     if(!testMaxMin(form.pro_TCP_ttl,\"TCP time to live\",1,255)) return (false);
  153.     if(!testInt(form.pro_TCP_keepalive_intrvl,\"TCP KeepAlive interval\")) return (false);
  154.     return (true);
  155. }
  156.  
  157. function testFile(Ctrl, what) {
  158.     if (Ctrl.value == \"\") return (true);
  159.     if (!testFilename(Ctrl, what)) return (false);
  160.     return (true);
  161. }
  162. function testMaxMin(Ctrl,what,min,max) {
  163.     if (Ctrl.value == \"\") return (true); 
  164.     start = 0;  while (Ctrl.value.charAt(start) == ' ') { start++; } 
  165.     end = Ctrl.value.length-1; while (Ctrl.value.charAt(end) == ' ') { end--; } 
  166.     str = Ctrl.value.substring(start,end+1); num = parseInt(str); 
  167.     if (num > max) { errorBox (Ctrl, \"The \" + what + \" must be \" + max + \" or less.\"); return (false); } 
  168.     if (num < min) { errorBox (Ctrl, \"The \" + what + \" must be at least \" + min); return (false); }  
  169.     return (true);
  170. }
  171. function testMaxMinList(Ctrl,what,min,max) {
  172.     if (Ctrl.value == \"\") return (true); 
  173.     for (start = 0, comma = 0; comma != -1; start = comma+1) { 
  174.         comma = Ctrl.value.indexOf (',', start);  
  175.         if (start == Ctrl.value.length) return (true); if (comma == start) continue; 
  176.         if(comma == -1) val = Ctrl.value.substring(start, Ctrl.value.length); 
  177.         else val = Ctrl.value.substring(start, comma); 
  178.         for (s = 0; val.charAt(s) == ' '; s++) ;
  179.         for (e = val.length-1; val.charAt(e) == ' '; e--) ; 
  180.         num = parseInt(val.substring(s,e+1)); 
  181.         if (num > max) { errorBox (Ctrl, \"The \" + what + \" list values must be \\n \" + max + \" or less.\"); return (false); } 
  182.         if (num < min) { errorBox (Ctrl, \"The \" + what + \" list values must be \\nat least \" + min); return (false); } 
  183.     } return (true);
  184. }
  185. function testInt(Ctrl,what) {
  186.     if (Ctrl.value == \"\") return (true); 
  187.     start = 0;  while (Ctrl.value.charAt(start) == ' ') { start++; } 
  188.     end = Ctrl.value.length-1; while (Ctrl.value.charAt(end) == ' ') { end--; } 
  189.     for (n = start; n <= end; n++) { 
  190.         digit = Ctrl.value.charAt(n); 
  191.         if(! checkInt_c(digit, 10)) { errorBox (Ctrl, \"The \" + what + \" \" + Ctrl.value + \"\\nis not a valid integer.\"); return (false); } 
  192.     } return (true);
  193. }
  194. function testIntList(Ctrl,what) {
  195.     if (Ctrl.value == \"\") return (true); 
  196.     for (start = 0, comma = 0; comma != -1; start = comma+1) { 
  197.         comma = Ctrl.value.indexOf (',', start);  
  198.         if (start == Ctrl.value.length) return (true); if (comma == start) continue; 
  199.         if(comma == -1) val = Ctrl.value.substring(start, Ctrl.value.length); 
  200.         else val = Ctrl.value.substring(start, comma); 
  201.         for (s = 0; val.charAt(s) == ' '; s++) ;
  202.         for (e = val.length-1; val.charAt(e) == ' '; e--) ; 
  203.         while (s <= e) { digit = val.charAt(s); s++; if(! checkInt_c(digit, 10)) { errorBox (Ctrl, \"Illegal value: \" + val + \"\\nin \" + what + \" list.\"); return (false); } } 
  204.     } return (true);
  205. }
  206. function testRange(Ctrl,what) { 
  207.     if (Ctrl.value == \"\") return (true); 
  208.     for (start = 0, comma = 0; comma != -1; start = comma+1) { 
  209.         comma = Ctrl.value.indexOf (',', start);  
  210.         if (start == Ctrl.value.length) return (true); if (comma == start) continue; 
  211.         if(comma == -1) str = Ctrl.value.substring(start, Ctrl.value.length); 
  212.         else str = Ctrl.value.substring(start, comma); 
  213.         for (s=0, hyphen=-1; s < str.length; s++) { 
  214.             if (str.charAt(s) == '-') { hyphen = s; continue; } 
  215.             if(! checkInt_c(str.charAt(s), 10)) { if(str.charAt(s) == ' ') errorBox (Ctrl, \"Please do not use spaces in \\nthe \" + what + \" list\"); else errorBox (Ctrl, \"Illegal character: \" + str.charAt(s) + \" in \" + what + \" list.\"); return (false); } 
  216.         } 
  217.         if (hyphen == -1) { errorBox (Ctrl, \"Illegal \" + what + \" value: \" + str); return (false); } 
  218.         num1 = parseInt(str.substring(0,hyphen)); num2 = parseInt(str.substring(hyphen+1,str.length)); 
  219.         if (num1 > num2) { errorBox (Ctrl, \"Illegal \" + what + \" value: \" + str); return (false); } 
  220.         if (num1 > 255 || num2 > 255) { errorBox (Ctrl, \"Range values must be between 0 and 255.\"); return (false); }
  221.     } return (true);
  222. }
  223. function testIPAddr(Ctrl,what,netmask) {
  224.     if (Ctrl.value == \"\") return (true); 
  225.     if (!testIPaddress(Ctrl.value,netmask)) { 
  226.         errorBox (Ctrl, \"Illegal \" + what + \": \" + Ctrl.value); 
  227.         return (false); 
  228.     } 
  229.     return (true);
  230. }
  231. function testIPPairs(Ctrl,what) { 
  232.     if (Ctrl.value == \"\") return (true); 
  233.     for (start = 0, comma = 0; comma != -1; start = comma+1) { 
  234.         comma = Ctrl.value.indexOf (',', start);  
  235.         if (start == Ctrl.value.length) return (true); 
  236.         if (comma == start) continue; 
  237.         if(comma == -1) str = Ctrl.value.substring(start, Ctrl.value.length); 
  238.         else str = Ctrl.value.substring(start, comma); 
  239.         for (s=0, hyphen=-1; s < str.length; s++) { 
  240.             if (str.charAt(s) == '-') { hyphen = s; continue; } 
  241.         } 
  242.         if (hyphen == -1) { 
  243.             errorBox (Ctrl, str + \" is not a valid \" + what); 
  244.             return (false); 
  245.         } 
  246.         sub1 = str.substring(0,hyphen); 
  247.         sub2 = str.substring(hyphen+1,str.length); 
  248.         if (sub1 == \"\" || sub2 == \"\") { 
  249.             errorBox (Ctrl, str + \" is not a valid \" + what); 
  250.             return (false); 
  251.         } 
  252.         if (!testIPaddress(sub1,0)) { 
  253.             errorBox (Ctrl, \"Illegal address value: \" + sub1 
  254.                 + \" in\\n\" + what + \" \" + str); 
  255.             return (false); 
  256.         } 
  257.         if (!testIPaddress(sub2,0)) { 
  258.             errorBox (Ctrl, \"Illegal address value: \" + sub2 
  259.                 + \" in\\n\" + what + \" \" + str); 
  260.             return (false); 
  261.         } 
  262.     } 
  263.     return (true);
  264. }";
  265.